﻿using System;
using System.AddIn.Contract;
using System.AddIn.Pipeline;
using System.Collections.Generic;

namespace dotSimpl.wlanner.AddIns.Contracts
{
    /// <summary>
    /// Represents add-in prerforming action.
    /// </summary>
    [AddInContract]
    public interface IActorContract : IContract
    {
        #region Properties

        /// <summary>
        /// Gets the name of the add-in;
        /// </summary>
        string InternalName { get; }
        
        /// <summary>
        /// Gets the add-in version;
        /// </summary>
        string CompatibilityVersion { get; }

        #endregion

        #region Methods

        /// <summary>
        /// Gets default add-in settings, used for filling UI.
        /// </summary>
        /// <returns>Current add-in initial settings.</returns>
        KeyValuePair<string, string>[] GetInitialSettins();

        /// <summary>
        /// Gets keys for settings.
        /// </summary>        
        string[] GetSettingNames();

        /// <summary>
        /// Applies settings to system.
        /// </summary>
        /// <param name="settings">Settings to apply.</param>
        void ApplySettings(KeyValuePair<string, string>[] settings, Guid networkCard);

        #endregion
    }
}
